object Highlevel {
  def main(args: Array[String]): Unit = {
    //高阶函数
    //
    val arr1 = Array(1,2,3,4,5)
    //需要实现每个元素乘于2
    var arr2 = new Array[Int](arr1.length)
    //arr1.indices == 0 until arr1.length
    for(i<- arr1.indices){
      arr2(i)=arr1(i)*2
    }
    println(arr2.mkString(","))


    /*凡是涉及遍历操作，Scala具有绝大部分应用场景下的高阶函数
   使得Scala更适合做数据科学领域
  */

    //使用map进行*2操作,nao函数做arr的遍历操作，使用定制的处理方法对每个元素进行操作
    //结果:匿名函数表达
    var arr2_map= arr1.map(n => n *2)
    println(arr2_map.mkString(","))

    //此方法将map遍历array当中每一个元素使用该方法进行处理
    def arr1_count(i: Int): Int = {
        i * 2 +3
    }

    var arr2_def = arr1.map(arr1_count)
    println(arr2_def.mkString(","))

    def arr2_def_print(int: Int): Unit = {
      println(int)
    }

    arr2_def.foreach(arr2_def_print)


    arr2.map((i:Int) => i*2+3)
    println(arr2.map((i: Int) => i * 2 + 3).mkString("Array(", ", ", ")"))

//    println(arr2.map((i: Int) => println()).mkString("Array(", ", ", ")"))

    arr1.map((i:Int) => i*2+3).foreach((i:Int) => print(i+" "))

    //在缩写
    println()
    arr1.map(i => i*2+3).foreach(i => print(i+" "))
    println()
    //_表示当前读取到的元素
    arr1.map(_*2+3).foreach(i => print(i+" "))

    var arr3 = for(i <- arr1) yield i * 2 +3
    arr3.foreach(println)


    val str1 = "hello world to scala"
    val str2 = "hello,world,to,scala"
    println(str1.split(" ").mkString("\t"))
    println(str2.split(",").mkString("\t"))
  }

}
